{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## _*Quantum SVM algorithm:  multiclass classifier extension*_\n",
    "\n",
    "A multiclass extension works in conjunction with an underlying binary (two classes) classifier to provide multiclass classification.\n",
    "Here we choose the `Wine` dataset which has 3 classes."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "from sklearn.datasets import load_wine\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.decomposition import PCA\n",
    "from sklearn.preprocessing import MinMaxScaler, StandardScaler\n",
    "\n",
    "from qiskit.circuit.library import ZZFeatureMap\n",
    "from qiskit.primitives import Sampler\n",
    "\n",
    "from qiskit_machine_learning.algorithms import QSVC\n",
    "from qiskit_machine_learning.kernels import FidelityQuantumKernel\n",
    "from qiskit_algorithms.state_fidelities import ComputeUncompute"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "# function to get sklearn wine dataset, take the desired number of samples and features, scale it and plot it\n",
    "\n",
    "def wine(training_size, test_size, n_features, plot_data=False):\n",
    "    \"\"\" returns wine dataset \"\"\"\n",
    "    data, target = load_wine(return_X_y=True)\n",
    "    sample_train, sample_test, label_train, label_test = train_test_split(data, target, test_size=test_size, random_state=42)\n",
    "\n",
    "    std_scale = StandardScaler().fit(sample_train)\n",
    "    sample_train = std_scale.transform(sample_train)\n",
    "    sample_test = std_scale.transform(sample_test)\n",
    "\n",
    "    pca = PCA(n_components=n_features).fit(sample_train)\n",
    "    sample_train = pca.transform(sample_train)\n",
    "    sample_test = pca.transform(sample_test)\n",
    "\n",
    "    samples = np.append(sample_train, sample_test, axis=0)\n",
    "    minmax_scale = MinMaxScaler(feature_range=(-1, 1)).fit(samples)\n",
    "    sample_train = minmax_scale.transform(sample_train)\n",
    "    sample_test = minmax_scale.transform(sample_test)\n",
    "\n",
    "    sample_train = sample_train[:training_size, :]\n",
    "    label_train = label_train[:training_size]\n",
    "    sample_test = sample_test[:training_size, :]\n",
    "    label_test = label_test[:training_size]\n",
    "\n",
    "    if plot_data:\n",
    "        try:\n",
    "            import matplotlib.pyplot as plt\n",
    "        except ImportError:\n",
    "            raise NameError('Matplotlib not installed. Please install it before plotting')\n",
    "        for k in range(0, 3):\n",
    "            plt.scatter(sample_train[label_train == k, 0][:training_size],\n",
    "                        sample_train[label_train == k, 1][:training_size])\n",
    "\n",
    "        plt.title(\"PCA dim. reduced Wine dataset\")\n",
    "        plt.show()\n",
    "\n",
    "    return sample_train, label_train, sample_test, label_test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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ycmIjo7GwoUL8eijj+Lee+/FfffdBwCW6964cSN++eUXjB49GhqNBvv27cNbb72Fffv24fvvv4dCoQAAPPLII1i9ejXGjRuHpKQknD17Ft9++y0OHDiAnj17AgC2bNmC/v37IyUlBVOnToVSqcTSpUtx22234ZtvvkFqairuu+8+/O9//8OHH36I1157DW3atAEASxBGIUgQBZGlS5cKAGLTpk3i9OnT4sSJE2LlypWidevWomnTpuLXX38VQgjRsmVL0aNHD5fOPW7cOJGQkCCMRqMQQoivvvpKABC7d+92+Np58+YJAGLVqlWWY1VVVaJTp04CgNi6davleE5OjmjXrp3lcWlpqQAgoqOjxblz5yzHJ0+eLACIHj16iMuXL1uODx8+XDRp0kRcvHjRpesT4s+/v969e4srV65Yjp8/f15ERUWJ3Nxcq/ZarVao1Wqr48nJySIuLs6qr+a/q9rXtXXr1nrXXvt6ly5dajl2yy23iBYtWohjx45ZtTV/FkIIMWbMGBEXFyfOnDlj1WbYsGFCrVaL6upqIYRrn4Ut+/btEwDE9OnThRBCXL58WTRr1kwsX75cCCFEbGysWLBggRBCCL1eL8LCwqz+fmxdd58+fQQA8e6771qO1dTUCI1GIwYPHmw59t577wmlUim++eYbqz4tWrRIABDbtm2z2+9Lly6JmJgYkZycLGpqaizH33rrLQFA9OnTx3LsypUrVm2EEOK3334TsbGx4uGHH7YcO336tAAgpk6dWu/9zH/ftX344YcCgPj6668tx9RqtXj88cft9ttoNIprrrlGZGVlWX3e1dXVIjExUdx+++2WY7NnzxYARGlpqd3zUejgFBUFpczMTERHRyMhIQHDhg1D8+bNsXbtWrRt2xaA6TfUFi1aOH2+K1eu4KOPPsLQoUMtv3nedtttiImJcSrZeMOGDYiLi7MaMYqIiMDYsWOd7sMDDzwAtVpteZyWlgYAGDFiBBo1amR1/NKlSzh58qTT564rNzcXYWFhlscbN27EuXPnMHz4cJw5c8byFRYWhrS0NMvURVlZGfbs2YOcnByrvt5+++1ISkpyqy+nT5/G119/jYcffhhXX3211XPmz0IIgTVr1uCuu+6CEMKqj1lZWdDpdJYpD08/i65du6J169aW3Joff/wRVVVVllVSGRkZlqmToqIiGAwGS/5NQ5o3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UdBhgENERERBhwEOERERBR0GOERERBR0GOAQERFR0GGAQ0REREGHAQ4REREFHQY4REREFHQa+bsDREREFDwMRoHi0kpUnL+ImBbhSE1shTClwuf9YIBDREREkigoKcO09ftRprtoORanDsfUu5KQ3S3Op33hFBURERF5rKCkDI++v8squAEAre4iHn1/FwpKynzaHwY4RERE5BGDUWDa+v0QNp4zH5u2fj8MRlstvIMBDhEREXmkuLSy3shNbQJAme4iiksrfdYnBjhERETkkYrz9oMbd9pJgQEOEREReSSmRbik7aTAAIeIiIg8kprYCnHqcNhbDK6AaTVVamIrn/WJAQ4RERF5JEypwNS7kgCgXpBjfjz1riSf1sNhgENEREQey+4Wh4UjekKjtp6G0qjDsXBET5/XwWGhPyIiIpJEdrc43J6kYSVjIiIiki93tl0IUyqQ3rG1j3pon0+mqBYsWID27dsjPDwcaWlpKC4uttu2b9++UCgU9b4GDhxoaTNq1Kh6z2dnZ/viUoiIiEJCQUkZeudvwfC3v8c/Vu7B8Le/R+/8LT6vSOwurwc4H330EfLy8jB16lTs2rULPXr0QFZWFioqKmy2/+STT1BWVmb5KikpQVhYGB544AGrdtnZ2VbtPvzwQ29fChERUUiQ27YL7vB6gDN37lzk5uZi9OjRSEpKwqJFixAREYElS5bYbN+qVStoNBrL18aNGxEREVEvwFGpVFbtWrZsabcPNTU10Ov1Vl9ERERUnxy3XXCHVwOcS5cuYefOncjMzPzzDZVKZGZmoqioyKlzLF68GMOGDUOzZs2sjhcWFiImJgadO3fGo48+irNnz9o9x4wZM6BWqy1fCQkJ7l0QERFRkJPjtgvu8GqAc+bMGRgMBsTGxlodj42NhVardfj64uJilJSU4G9/+5vV8ezsbLz77rvYvHkz8vPz8d///hf9+/eHwWCweZ7JkydDp9NZvk6cOOH+RREREQUxOW674A5Zr6JavHgxunfvjtTUVKvjw4YNs/x/9+7dcf3116Njx44oLCxEv3796p1HpVJBpVJ5vb8kTwajAbsqduF09WlER0SjZ0xPhCnD/N0tIiJZkuO2C+7waoDTpk0bhIWFoby83Op4eXk5NBpNg6+tqqrCypUr8eKLLzp8nw4dOqBNmzY4fPiwzQCHQtemY5sws3gmyqv/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Tz75xPJ45syZIioqSnz22Wfip59+EnfffbfNZeI33HCD2L59u/j222/FNddcI5tl4g3169dffxWdO3cW27dvt3rdoUOHhEKhEP/5z3/qnXPdunXi7bffFnv37hWHDh0S//73v0VERISYMmWK16/HGa5e8+HDh8WLL74ofvjhB1FaWio+++wz0aFDB3HLLbdYXmNeJn7HHXeIPXv2iIKCAhEdHS2bZeKuXK9OpxNpaWmie/fu4vDhw1bLSq9cuSKEkNdnvHLlSqFSqcSyZcvE/v37xdixY0VUVJRlRdtDDz0kJk2aZGm/bds20ahRIzFnzhxx4MABMXXqVJvLxB39TPuLq9c7c+ZM0aRJE7F69Wqrz9L8b9r58+fF008/LYqKikRpaanYtGmT6Nmzp7jmmmv8GpybuXq906ZNE19++aU4cuSI2Llzpxg2bJgIDw8X+/bts7SR8+crhOvXbNa7d28xdOjQesfl/hm7iwGOi3JycgSAel9bt261tMEf9T/MjEajeP7550VsbKxQqVSiX79+4uDBg1bnPXv2rBg+fLho3ry5iIyMFKNHj7YKmvzFUb9KS0vrXb8QQkyePFkkJCQIg8FQ75z/+c9/RHJysmjevLlo1qyZ6NGjh1i0aJHNtv7g6jUfP35c3HLLLaJVq1ZCpVKJTp06iWeeecaqDo4QQhw9elT0799fNG3aVLRp00ZMmDDBalm1v7h6vVu3brX5MwBAlJaWCiHk9xnPnz9fXH311aJJkyYiNTVVfP/995bn+vTpI3Jycqzar1q1Slx77bWiSZMm4rrrrhNffPGF1fPO/Ez7kyvX265dO5uf5dSpU4UQQlRXV4s77rhDREdHi8aNG4t27dqJ3NzcerVj/MmV6x0/frylbWxsrBgwYIDYtWuX1fnk/vkK4fr39M8//ywAiK+++qreuQLhM3aHQggZrM0lIiIikhDr4BAREVHQYYBDREREQYcBDhEREQUdBjhEREQUdBjgEBERUdBhgENERERBhwEOERERBR0GOERERBR0GOAQERFR0GGAQ0REREGHAQ4REREFnf8HskJUsLBJyo0AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_data, train_labels, test_data, test_labels = wine(\n",
    "    training_size=120,\n",
    "    test_size=20, n_features=2, plot_data=True\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training set accuracy 0.8916666666666667; test set accuracy: 0.8\n"
     ]
    }
   ],
   "source": [
    "feature_map = ZZFeatureMap(2)\n",
    "\n",
    "fidelity = ComputeUncompute(sampler=Sampler())\n",
    "new_kernel = FidelityQuantumKernel(feature_map=feature_map, fidelity=fidelity)\n",
    "\n",
    "# you can use One-Versus-One classification ('ovo') or One-Versus-Rest ('ovr')\n",
    "qsvc = QSVC(quantum_kernel=new_kernel, decision_function_shape='ovr')\n",
    "\n",
    "qsvc.fit(train_data, train_labels)\n",
    "print(f'Training set accuracy {qsvc.score(train_data, train_labels)}; test set accuracy: {qsvc.score(test_data, test_labels)}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "qiskit==1.1.0\n",
      "qiskit-aer==0.14.2\n",
      "qiskit-algorithms==0.3.0\n",
      "qiskit-ibm-runtime==0.25.0\n",
      "qiskit-machine-learning==0.7.2\n",
      "qiskit-nature==0.7.2\n",
      "qiskit-nature-pyscf==0.4.0\n",
      "qiskit-qasm3-import==0.5.0\n",
      "qiskit-transpiler-service==0.4.5\n"
     ]
    }
   ],
   "source": [
    "! pip freeze | grep qiskit"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.14"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
